package org.mdrtwell.swing.labeltextscroll;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FontMetrics;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Test {
	private JFrame	frame;
	private String	scrolledText;
	private String	str	= "滚动文字 Demo";

	/**
	 * Launch the application
	 * 
	 * @param args
	 */
	public static void main(String args[]) {
		try {
			Test window = new Test();
			window.frame.setVisible(true);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * Create the application
	 */
	public Test() {
		initialize();
	}

	/**
	 * Initialize the contents of the frame
	 */
	private void initialize() {
		frame = new JFrame();
		frame.setBounds(100, 100, 500, 375);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		final JPanel panel = new JPanel();
		panel.setBackground(Color.WHITE);
		panel.setLayout(new BorderLayout());
		frame.getContentPane().add(panel, BorderLayout.NORTH);
		final JLabel label = new JLabel();
		label.setText("New JLabel");
		panel.add(label);
		label_scrolledText(label);
		// 当窗体变化时要重新对label的滚动文字进行设置
		frame.addComponentListener(new ComponentAdapter() {
			public void componentResized(ComponentEvent arg0) {
				label_scrolledText(label);
			}
		});
	}

	/**
	 * 滚动文字
	 * 
	 * @param label
	 */
	public void label_scrolledText(JLabel label) {
		this.scrolledText = this.str;
		label.setText(scrolledText);
		FontMetrics metrics = label.getFontMetrics(label.getFont());
		int textW = metrics.stringWidth(label.getText());
		// Dimension frameSize = frame.getSize();
		int parentW = label.getParent().getWidth();
		for (int i = 1; i <= (parentW - textW) / 3 - 3; i++)
			scrolledText += " ";
		label.setText(scrolledText);
		Thread thread = new Thread(new TextChanger(label));
		thread.start();
	}
}
